讲解任何一个东西,我们一定要知道:它是什么?怎么用?两个很关键的问题

定义

首先 node 并不是一门语言,而是 javascript 的一个新的运行环境(准确地说是 js 的一个运行时)

传统上,js 的运行环境依赖于浏览器,是借助于浏览器渲染的,因此这也限制了 js 的表演领域只能是浏览器(web)端

但是,当出现了 nodejs (node和nodejs一回事)后,js 又有了一个全新的运行时(还是习惯这么叫),js 搭上了 node 这列快车后,使得 js 的用武之地拓展到了 服务端、游戏端、tcp、web端、桌面端等(不依托于浏览器等地方),因此这两者的强势结合,在业界(尤其前端)掀起了一阵风暴

我们常用的还是 它在桌面端和 web 端这种全新的开发模式

说到 node在 web 端的开发,就不得不提及一个伟大的 node 在 web 端的库(类似于框架,准确地说我也不知道库和框架的真正意义上区别是什么),那就是 Express 库

而 node 在桌面端的开发中,也有两个大名鼎鼎的 库:nw 和 electron(谷歌力推的)

由此看来,node 的前景无限美好啊,同志们仍需努力啊,废话就不多说了,开始撸吧

接下来,我说一下利用 node 和 Express 库 来搭建一个站点的原理吧,流程模式类似于:浏览器发起一个请求,然后服务端接受(或者是叫拦截 intercept)这个请求,然后响应函数,将处理结果返回给浏览器,交给浏览器去渲染该相应结果

一个完整的 node Express 库的项目结构如下:

|__node_modules
|__routers
    |__main.js
|__views
    |__index.html
    |__about.html
|__package.json
|__app.js

上面这些是一个 Express 库项目所必需的

接下来,开始真正的表演了

1、创建 Express 的服务器(server)

我在前面说过,node 的项目最关键的是处理 js,因此在 node 中,最重要以及控制整个项目的运行都是依赖于 js 的,但是这些 js 文件是依赖于 node 去加载处理的,所以即使你看到一大堆 html 页面,也是不能直接在浏览器中正确运行的

而控制整个项目的最高一级 js 是一个叫 app.js 的文件(你完全可以重新命名,并重写它,但是约定俗成叫这个名);请注意这个文件的目录级别,是位于项目根目录的,切记(因为是最高级别的)

  • 接下来,我们就手写这个文件,并说明这个文件的每一处代码的作用
    //1、要想构建一个浏览器端访问,服务端响应的系统(暂且称之为系统吧),在node中,有很多种方式,这里我们采用Express库来创建服务端
    var express = require('express');
    
    //2、这个库对外提供了一个 express() 的入口方法,用来创建服务端实例
    var app = express();
    
    //3、设置服务端的响应 url 映射地址
    app.get('/index', function (req, res) {
        res.send("哇塞,你真的进来了哦");
    });
    
    //4、让这个服务端的实例监听一个浏览器的端口,同时附带一些友好提示信息
    app.listen('3333', function () {
        console.log("Server is running on http://127.0.0.1:3333");
    });
    

到此,一个最简单的 demo 就完成了,然后你进入到该文件所在的目录下,执行命令 node app.js(注意,这里我还是按照大部分人的习惯,起名叫 app.js 了)

这个时候,你就可以在浏览器输入控制台打印出的这个地址访问了,是不是 so easy!(注意,我这里设置的拦截请求是 /index,因此按照我的来的话,你得这样访问:http://127.0.0.1:3333/index),好了,先总结到这里吧

  • 但是实际上,我们的响应绝不是几个字符串那么简单呐,而是需要根据不同的请求去渲染不同的页面,因此光是上面那样是不行的哦;别灰心,接下来我们再来修改上面的内容,实现根据接受不同的请求从而渲染不同的页面,好了,让我们开始吧,是不是有点迫不及待了。。。
    //1、复制上面代码,然后修改响应数据
    var express = require('express');
    
    var app = express();
    
    //2、既然是 响应各种页面,那么我们就需要一个视图渲染引擎了,在 Express node 中,就是 ejs
    var ejs = require('ejs');
    
    //3、将创造出的这个服务端实例的视图引擎修设置为 ejs
    app.set('view engine', 'ejs');
    
    //4、在设置 ejs 引擎处理的是哪一类文件
    app.engine('html', ejs.renderFile);
    
    //5、下面这些代码保持不动就行了,无非就是多加了几个页面 【注意,get表示我这里只处理的是 get 请求哦】
    app.get('/index', function (req, res) {
      res.render('./index.html'); //这里是绑定该响应将要渲染的那个页面
    });
    app.get('about', function (req, res) {
        res.render('./about.html'); //同上,但是我多说一句,这里一般经常会出现渲染页面路径写的不对的问题,这个需要你自己慢慢观察了【ps:渲染时,系统会自动去 views 文件夹下面找视图,因此,如果你的页面是views的直接子目录,那就直接写目标页面即可】
    });
    
    app.listen('3333', function () {
        console.log("Server is running on http://127.0.0.1:3333");
    });
    

嚄,终于完成了,虽然累,但是理解的还是深刻的嘛,入门的不二选择哦,欢迎交流哦

声明

原创手敲不易,转载请注明出处,谢谢。我是拉丁小毛,欢迎大家关注我哦,一起交流,共同进步。有问题可以邮我哦(util.you.com@gmail.com)

hello_segment
41 声望3 粉丝